package com.example.exam1.service;

import com.example.exam1.dao.UserDao;
import com.example.exam1.entity.User;

/**
 * @author wushuang
 * recorrected by Deepwind
 */
public class UserService {
    UserDao userDao = new UserDao();

    /**
     * 注册
     *
     * @param user User对象
     * @return 正确返回数据库更新行数（1）；否则返回错误标识码，0表示注册失败（数据库异常），-1表示参数错误，-2表示用户名已存在
     */
    public int register(User user) {
        // 一般来说，不涉及数据库操作的参数检查应该在 Controller 中完成，这里仅做演示
        // 考虑到易读性，分离两个返回 -1 的判断
        if (user == null) {
            return -1;
        }
        if (user.getUsername().trim().isEmpty() || user.getPassword().trim().isEmpty()) {
            return -1;
        }

        if (userDao.isUserExisted(user)) {
            return -2;
        }
        return userDao.addUser(user);
    }

    /**
     * 登录
     *
     * @param user User
     * @return 状态码
     */
    public int login(User user) {
        // 一般来说，不涉及数据库操作的参数检查应该在 Controller 中完成，这里仅做演示
        if (user == null) {
            return -1;
        }
        if (user.getUsername().trim().isEmpty() || user.getPassword().trim().isEmpty()) {
            return -1;
        }
        // 检索不到用户
        if (!userDao.isUserExisted(user)) {
            return -2;
        }
        // 判断密码是否正确
        if (userDao.searchUser(user).getPassword().equals(user.getPassword())) {
            return 1;
        } else {
            return 0;
        }
    }
}
